package editorsvg.editor.formas;

import editorsvg.propiedades.GrupoPropiedades;
import editorsvg.propiedades.PropiedadNumericaReal;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;

/**
 * Forma que representa una elipse.
 * @author Jorge Berjano
 */
public class Elipse extends Forma {
    private Double cx = new Double(0);
    private Double cy = new Double(0);
    private Double rx;
    private Double ry;
    private Ellipse2D elipse = new Ellipse2D.Double();
    
    @Override
    public String getNombreTag() {
        return "ellipse";
    }
    
    @Override
    public Shape getShape() {
        actualizar();
        return elipse;
    }
        
    @Override
    public void actualizar() {
        if (cx != null && cy != null && rx != null && ry != null) {
            elipse.setFrameFromCenter(cx, cy, cx + rx, cy + ry);
        }
    }
    
    public void setCentro(Point2D centro) {
        cx = centro.getX();
        cy = centro.getY();
    }
    
    public Point2D getCentro() {
        return new Point2D.Double(cx, cy);
    }

    public Double getCx() {
        return cx;
    }

    public void setCx(Double cx) {
        this.cx = cx;

    }
    
    public Double getCy() {
        return cy;
    }

    public void setCy(Double cy) {
        this.cy = cy;
    }

    public Double getRx() {
        return rx;
    }

    public void setRx(Double rx) {
          this.rx = rx;
    }

    public Double getRy() {
        return ry;
    }

    public void setRy(Double ry) {
        this.ry = ry;
    }    

    @Override
    public GrupoPropiedades obtenerPropiedades() {
        GrupoPropiedades grupo = new GrupoPropiedades("Elipse");
        grupo.agregarPropiedad(new PropiedadNumericaReal(this, "cx"));
        grupo.agregarPropiedad(new PropiedadNumericaReal(this, "cy"));
        grupo.agregarPropiedad(new PropiedadNumericaReal(this, "rx"));
        grupo.agregarPropiedad(new PropiedadNumericaReal(this, "ry"));
        return grupo;
    }
}
